import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

@SuppressWarnings("serial")
public class AWTMenu extends JFrame implements ActionListener, ItemListener {
    static int i = 0;
    ImageIcon icon = new ImageIcon("ms.jpg");
    JTextField msg = new JTextField();
    JMenuBar mb = new JMenuBar(); // 创建菜单栏mb
    JMenu m1 = new JMenu("File"); // 创建菜单组件m1
    JMenu m2 = new JMenu("二级菜单"); // 创建二级菜单m2
    JMenuItem item = new JMenuItem("普通菜单项"); // 创建一个菜单选项组件item
    JCheckBoxMenuItem checkbox = new JCheckBoxMenuItem("复选菜单项"); // 创建一个复选菜单选项组件checkbox
    JMenuItem exit = new JMenuItem("退出");

    @SuppressWarnings("deprecation")
    public AWTMenu() {
        setIconImage(icon.getImage());

        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });

        Container c = getContentPane(); // 获得窗口的内容显示层
        setTitle("菜单综合应用实例");
        setSize(350, 500);
        c.add(msg); // 添加组件
        mb.add(m1);
        m1.add(m2);
        checkbox.setState(false); // 设置复选菜单项的选取状态，true有勾，false没勾
        m1.add(item);
        m1.setMnemonic('F'); // 用此方法设置JMenu和JMenuItem的快捷键
        item.setAccelerator(KeyStroke.getKeyStroke('I', java.awt.Event.CTRL_MASK, false));// 利用getKeyStroke方法来指定快捷键的键值
        m1.add(checkbox);

        m1.addSeparator(); // 在菜单中加入功能选项分隔线
        m1.add(exit);

        m2.add("菜单项A");
        m2.add("菜单项B");
        item.addActionListener(this);
        checkbox.addActionListener(this);
        exit.addActionListener(this);
        setJMenuBar(mb);
        show(); // 显示窗口界面
    }

    public void actionPerformed(ActionEvent e) // 动作事件类
    {
        if (e.getSource() == exit)
            System.exit(0);
        /*
         * else msg.setText(e.getActionCommand()+"被打开");
         */
        if (e.getSource() == item) {
            msg.setText(item.getText() + "被打开");
            // checkbox.setState(false);
        }
        if (e.getSource() == checkbox) {
            i = i + 1;
            if (i % 2 == 1)
                msg.setText(checkbox.getText() + "被选中");
            else
                msg.setText(checkbox.getText() + "被取消");
        }
    }

    // 项目事件类状态
    public void ItemStateChanged(ItemEvent e) {

    }

    public static void main(String[] args) {
        new AWTMenu();
    }

    @Override
    public void itemStateChanged(ItemEvent e) {
    }
}
